/**
 * 统一跳转
 */
function navigateTo(url) {
	uni.navigateTo({
		url: url,
		animationType: 'pop-in',
		animationDuration: 300
	})
}

/**
 * 登录页
 */
function jumpToLogin(){
	return navigateTo('/pages/login/login')
}

/**
 * @param {Object} url
 */
function switchTabTo(url) {
	uni.switchTab({
		url: url,
		animationType: 'pop-in',
		animationDuration: 300
	})
}

//操作成功后，的提示信息
function successToShow(msg = '保存成功', callback = function() {}) {
	uni.showToast({
		title: msg,
		icon: 'success',
		duration: 1000
	})
	setTimeout(function() {
		callback()
	}, 500)
}

//操作失败的提示信息
function errorToShow(msg = '操作失败', callback = function() {}) {
	uni.showToast({
		title: msg,
		icon: 'none',
		duration: 1500
	})
	setTimeout(function() {
		callback()
	}, 1500)
}

/**
 * 图片预览
 */
function previewImage(index, url) {
	uni.previewImage({
		current: index,
		urls: url,
		loop: true
	});
}

/**
 * 转换为多少分钟前
 */
function dateToRelativeTime(dateString) {
    // 解析输入的日期字符串
    const date = new Date(dateString);
    // 获取当前时间
    const now = new Date();
    
    // 处理无效日期
    if (isNaN(date.getTime())) {
        return '无效时间';
    }
    
    // 计算时间差（毫秒）
    const diffInMs = now - date;
    // 转换为秒（确保为非负数）
    const diffInSeconds = Math.max(0, Math.floor(diffInMs / 1000));
    
    // 定义时间单位和对应的秒数（新增秒级单位）
    const timeUnits = [
        { unit: '秒', seconds: 1 },
        { unit: '分钟', seconds: 60 },
        { unit: '小时', seconds: 3600 },
        { unit: '天', seconds: 86400 },
        { unit: '周', seconds: 604800 },
        { unit: '月', seconds: 2592000 }, // 30天
        { unit: '年', seconds: 31536000 }  // 365天
    ];
    
    // 检查每个时间单位
    for (let i = 0; i < timeUnits.length; i++) {
        const { unit, seconds } = timeUnits[i];
        const nextUnit = timeUnits[i + 1] ? timeUnits[i + 1].seconds : Infinity;
        
        if (diffInSeconds < nextUnit) {
            const count = Math.floor(diffInSeconds / seconds);
            // 特殊处理1秒的情况，避免"1秒前"和"刚刚"冲突
            return count > 0 ? `${count}${unit}前` : '刚刚';
        }
    }
    
    // 如果时间差超过一年，返回格式化日期
    return date.toLocaleString();
}

export {
	navigateTo,
	switchTabTo,
	successToShow,
	errorToShow,
	previewImage,
	jumpToLogin,
	dateToRelativeTime
}
